#ifndef NEWUSER_H
#define NEWUSER_H

#include <QDialog>
#include <QComboBox>
#include <QNetworkReply>
#include <QFile>

class mythread;
class AuthenticationPopups;
class HintWindow;
class MessagePops;
class LComboBox;

namespace Ui {
class newUser;
}

class newUser : public QDialog
{
    Q_OBJECT

public:
    explicit newUser(QWidget *parent = nullptr);
    ~newUser();
    void setThread(mythread *thread_,QByteArray bytes_,QStringList accountNumber_,QWidget *widget);//获取指静脉线程对象


private slots:
    void receSignaDestroy(QString data);//自定义完成签名接收槽函数
    void receThUserData(int n,QString data);//自定义关联指静脉线程接收槽函数
    void receMessage(QString data);//自定义提示窗口接收槽函数
    void receLComboBox(int,QString);//自定义下拉复选框接收槽函数
    void receLComboBox2(int,QString);

private slots:
    void hinttimer();
    void deletetimer();

    void requestFinishedFile(QNetworkReply *reply);//http发送指静脉信息接收槽函数

    void on_pushButton_5_clicked();//点击关闭按钮
    void on_pushButton_clicked();//点击采集指纹按钮
    void on_pushButton_2_clicked();//点击签名按钮
    void on_pushButton_3_clicked();//点击打开签名按钮
    void on_pushButton_4_clicked();//点击确定按钮
    void on_lineEdit_textChanged(const QString &arg1);
    void on_lineEdit_2_textChanged(const QString &arg1);
    void on_lineEdit_3_textChanged(const QString &arg1);

    void on_label_12_clicked();

signals:
    void sendUserMan(QString);   //用来传递此窗口和用户管理界面的信号

private:
    void initialize();//初始化界面
    void setcomboBox(QComboBox *comboBox);//设置QComboBox样式
    void setHint(QString data,int n=3);//指静脉提示信息窗口 data->提示语 (0->错误提示图标,1->正确提示图标)
    int ifInformationIntegrity();//判断输入用户信息是否完整(-1->不完整,1->完整)
    void WriteDigitalInformation();//把指静脉信息写入文件中保存
    void sendFingerVeinFile();//发送采集到的指静脉文件
    QString comboBoxText(LComboBox *comboBox);//解析获取lcomboBox选中文本


private:
    QWidget *qmain;//主窗口指针

    LComboBox *lComboBox;//性别
    LComboBox *lComboBox2;//权限

    QFile *file;
    QFile *file1;
    QHttpMultiPart *multiPart;
    QTimer *hinttime;
    QTimer *deletetime;

    Ui::newUser *ui;
    QString signaturePath;//电子签名路径
    QString filePath;//采集的指静脉信息文件路径
    QByteArray bytes;//http返回id码
    int ifSignature = 0;//判断是否完成电子签名
    mythread *thread;
    AuthenticationPopups *aps;
    HintWindow *hintw;//指静脉提示信息窗口


    QString gatherName;//采集者的姓名
    QString gender;//性别
    QString permission;//权限
    QString accountNumber;//账号
    QString contactInformation;//联系方式
    MessagePops *mps;
    MessagePops *mps2;
    QStringList accountNumbers;//保存所有用户账号
};

#endif // NEWUSER_H
